package main

import (
	"fmt"
	"strings"
)

/*
你有50枚金币，需要分配给以下几个人：Matthew,Sarah,Augustus,Heidi,Emilie,Peter,Giana,Adriano,Aaron,Elizabeth。
分配规则如下：
a. 名字中每包含1个'e'或'E'分1枚金币
b. 名字中每包含1个'i'或'I'分2枚金币
c. 名字中每包含1个'o'或'O'分3枚金币
d: 名字中每包含1个'u'或'U'分4枚金币
写一个程序，计算每个用户分到多少金币，以及最后剩余多少金币？
程序结构如下，请实现 ‘dispatchCoin’ 函数
*/
var (
	coins = 50
	users = []string{
		"Matthew", "Sarah", "Augustus", "Heidi", "Emilie", "Peter", "Giana", "Adriano", "Aaron", "Elizabeth",
	}
	distribution = make(map[string]int, len(users))
)

func dispatchCoin() int {
	sum := 0
	for _, value := range users {
		sum1 := 0
		for _, v := range strings.Split(value, "") {
			switch {
			case v == "e" || v == "E":
				sum++
				sum1++
			case v == "i" || v == "I":
				sum += 2
				sum1 += 2
			case v == "o" || v == "O":
				sum += 3
				sum1 += 3
			case v == "u" || v == "U":
				sum += 4
				sum1 += 4
			}
		}
		distribution[value] = sum1
	}
	return 50 - sum
}

//阶乘
func jiec(n int64) int64 {
	if n <= 1 {
		return 1
	}
	return n * jiec(n-1)
}

//n个台阶一次可以走一步也可以走两步
func taijie(n int64) int64 {
	if n == 1 {
		return 1
	}
	if n == 2 {
		return 2
	}
	return taijie(n-1) + taijie(n-2)
}

func main() {
	fmt.Println("获取用户输入的内容")
	// var s string
	// fmt.Scan(&s)
	// fmt.Println(s)
	// var (
	// 	name  string
	// 	age   int
	// 	class string
	// )
	// fmt.Scanf("%s %d %s\n", &name, &age, &class)
	// fmt.Println(name, age, class)
	fmt.Println("%T 查看类型")
	fmt.Println("%d 10进制")
	fmt.Println("%b 2进制")
	fmt.Println("%o 8进制")
	fmt.Println("%x 16进制")
	fmt.Println("%c 字符")
	fmt.Println("%s 字符串")
	fmt.Println("%p 指针")
	fmt.Println("%v 值")
	fmt.Println("%f 浮点 ")
	fmt.Println("%t 布尔")

	fmt.Printf("%T\n", distribution)

	left := dispatchCoin()

	fmt.Println("剩下：", left)
	fmt.Println(distribution)

	ret := taijie(10)
	fmt.Println("递归走台", ret)
	fmt.Println("递归走台阶乘", jiec(3))

}
